package Csv2RDF;

import RDFManager.PropertySet;
import org.apache.jena.rdf.model.Property;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * {@code RelationTrans}的作用为将关系{@code face1 -> face2}转换为关系{@code face2 -> face1}
 */
public class RelationTrans {

  /**
   * 对关系列表中的关系求逆，对于csv文件中出现的关系属性，除{@code coaxialContain}外均为对称属性，
   * 因此只需要将{@code coaxialContain}转换为{@code coaxialContainedBy}，其他关系保持不变
   *
   * @param propertyList 输入待转换关系列表
   * @return {@code propertyListInv}表示转换后的关系列表
   */
  public static List<Property> relationInv(List<Property> propertyList) {
    List<Property> propertyListInv = new ArrayList<>();
    for (Property property : propertyList) {
      if (Objects.equals(property.getLocalName(), "coaxialContainedBy") || Objects.equals(property.getLocalName(), "coaxial_containedBy")) {
        propertyListInv.add(PropertySet.coaxialContain);
      } else {
        propertyListInv.add(property);
      }
    }
    return propertyListInv;
  }
}
